'''
Created on 19/04/2013

@author: jean
'''
from pm.database import db
from sqlalchemy import ForeignKey
from sqlalchemy.orm import relationship

class Fases(db.Model):
    '''
    Clase que representa las fases existentes en un proyecto
    '''
    __tablename__ = 'fases'
    id_fase = db.Column(db.Integer, primary_key=True, nullable=False)
    '''
       PrimaryKey de la tabla
    '''
    nombre = db.Column(db.String(50), nullable=False)
    '''
       Nombre de la Fase
    '''
    descripcion = db.Column(db.String(100), nullable=False)
    '''
       Descripcion de la Fase
    '''
    posicion = db.Column(db.Integer, nullable=False)
    '''
       Posicion de la fase dentro del proyecto
    '''    
    estado = db.Column(db.Integer, nullable=False)
    '''
       Estado de la fase
    ''' 
    id_proyecto = db.Column(db.Integer, ForeignKey('proyectos.id_proyecto'), nullable=False)
    '''
       Proyecto al que pertenece la fase
    '''    
    activo = db.Column(db.Boolean, nullable=False)
    '''
       representa la fase en estado activo o inactivo
    ''' 
    cantidad_lb = db.Column(db.Integer, nullable=False)
    '''
       indica la cantidad de lineas bases con que cuenta una fase
    '''    
    cantidad_items = db.Column(db.Integer, nullable=False)
    '''
       indica la cantidad de items con que cuenta una fase
    '''    
    relationship("usuarios_roles") 

    def __init__(self, nombre, descripcion, posicion, estado, id_proyecto,activo,cantidad_lb,cantidad_items):
        self.nombre = nombre
        self.descripcion = descripcion
        self.posicion = posicion
        self.estado = estado
        self.id_proyecto = id_proyecto
        self.activo = activo
        self.cantidad_lb= cantidad_lb
        self.cantidad_items = cantidad_items
    
    def __repr__(self):
        return '{id_fase:%s, nombre:%s, descripcion:%s, posicion:%s, estado%s}' % (self.id_fase, self.nombre, self.descripcion, self.posicion, self.estado)
    
    def __json__(self):
        
        if self.estado==1:
            estado="No Iniciada"
        if self.estado==2:
            estado="Desarrollo"
        if self.estado==3:  
            estado= "Finalizada"
        if self.estado==4:
            estado = "Comprometida"
            
        return {'id':self.id_fase , 
                'nombre': self.nombre, 
                'descripcion': self.descripcion, 
                'posicion': self.posicion, 
                'estado': estado, 
                'id_proyecto': self.id_proyecto,
                'activo': self.activo,
                'cantidad_lb': self.cantidad_lb,
                'cantidad_items':self.cantidad_items
                }